//*************************************************************************************************************************************************************************
//Rev. 0.0 - 20.11.2009 LEGGI e SCRIVI INPUT
//*************************************************************************************************************************************************************************
// Richiede using System.IO e System.Collections
// LeggiInputdaFileTxt e ScriviInputsuFileTxt sono due metodi per recuperare e salvare tutti gli input presenti nella "gridprincipale" nel file "nomefile"
// Sono salvati: - text nelle textbox
// - ischeched di radiobutton
// - ischeched di checkbox
public static void LeggiInputdaFileTxt(string nomefile, Grid gridprincipale)
{
FileStream flussobyte = File.Open(nomefile, FileMode.Open); // la classe "filestream" definisce oggetti che rappresentano un flusso di byte. I byte possono rappresentare
// diversi file: file testo, immagini, video, ecc...
// il metodo open apre il file e si mette all'inizio
StreamReader flussocaratteri = new StreamReader(flussobyte); // la classe streamreader definisce oggetti che leggono flussi di byte e riconoscono i caratteri
Giovanni.scorrecontrolli(gridprincipale, flussocaratteri);
flussocaratteri.Close();
}
public static void ScriviInputsuFileTxt(string nomefile, Grid gridprincipale)
{
FileStream flussobyte = File.Open(nomefile, FileMode.Create); // vedi descrizione riportata per LeggiInputdaFileTxt
// il filemode "create" crea il file, se esiste lo cancella e si posiziona all'inizio.
StreamWriter flussocaratteri = new StreamWriter(flussobyte);
Giovanni.scorrecontrolli(gridprincipale, flussocaratteri);
flussocaratteri.Close();
}
public static void scorrecontrolli(object root, StreamReader flussocaratteri) // ho l'Overload di questo metodo, posso passare oggetto StreamReader o un oggetto StreamWriter
// questo metodo scorre tutti i controlli presenti nell'object specificato quando è richiamato il metodo
// l'oggetto passato deve essere la Grid principale che contiene tutto
{
Control control = root as Control; // utilizzo l'operatore "as". Se il cast è positivo control è diverso da null altrimenti è null
if (control != null) // verifico se il cast ha avuto successo (questo avviene quando l'oggetto non è un contenitore), nel caso positivo impongo cosa fare
{
// inserire l'azione da fare
TextBox tex = control as TextBox;
RadioButton rad = control as RadioButton;
CheckBox cbox = control as CheckBox;
if (tex !=null) // verifico se il cast ha avuto successo
tex.Text = flussocaratteri.ReadLine();
if (rad != null) // verifico se il cast ha avuto successo
{
string radvalue= flussocaratteri.ReadLine();
if (radvalue == "True")
rad.IsChecked = true;
else
rad.IsChecked = false;
}
if (cbox != null) // verifico se il cast ha avuto successo
{
string radvalue = flussocaratteri.ReadLine();
if (radvalue == "True")
cbox.IsChecked = true;
else
cbox.IsChecked = false;
}
}
if (root is DependencyObject) // verifico se l'oggetto è una DependencyObject, come un pannello ad esempio, in questo caso richiamo lo stesso metodo per
// tutti gli elementi figlio.
{
foreach (object child in LogicalTreeHelper.GetChildren((DependencyObject)root))
scorrecontrolli(child,flussocaratteri);
}
}
public static void scorrecontrolli(object root, StreamWriter flussocaratteri) // ho l'Overload di questo metodo, posso passare oggetto StreamReader o un oggetto StreamWriter
// questo metodo scorre tutti i controlli presenti nell'object specificato quando è richiamato il metodo
// l'oggetto passato deve essere la Grid principale che contiene tutto
{
Control control = root as Control; // utilizzo l'operatore "as". Se il cast è positivo control è diverso da null altrimenti è null
if (control != null) // verifico se il cast ha avuto successo (questo avviene quando l'oggetto non è un contenitore), nel caso positivo impongo cosa fare
{
TextBox tex = control as TextBox;
RadioButton rad = control as RadioButton;
CheckBox cbox = control as CheckBox;
if (tex != null)
flussocaratteri.WriteLine(tex.Text);
if (rad != null)
flussocaratteri.WriteLine(rad.IsChecked);
if (cbox != null)
flussocaratteri.WriteLine(cbox.IsChecked);
}
if (root is DependencyObject) // verifico se l'oggetto è una DependencyObject, come un pannello ad esempio, in questo caso richiamo lo stesso metodo per
// tutti gli elementi figlio.
{
foreach (object child in LogicalTreeHelper.GetChildren((DependencyObject)root))
scorrecontrolli(child, flussocaratteri);
}